<template>
  <div></div>
</template>

<script>
// ### 4. 选做  最大子数组和
// 给你一个整数数组 `nums` ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
// **子数组** 是数组中的一个连续部分。
//方法一： 推荐方法一
function maxSubArray(nums) {
  let pre = nums[0]
  let max = nums[0]
  for (let i = 1; i < nums.length; i++) {
    //判断加上当前项大 ，还是不加  一直更新 
    pre = Math.max(pre + nums[i], nums[i])
    max = Math.max(max, pre)
  }
  return max
}

console.log(maxSubArray([0, -1, -4, 6, 4, -9, 0, 5, 8, -7]))

// function maxSubArray2(nums) {
//   let dp = [nums[0]]
//   let max = nums[0]
//   for (let i = 1; i < nums.length; i++) {
//     //判断加上当前项大 ，还是不加  一直更新 
//     dp[i] = Math.max(dp[i-1] + nums[i], nums[i])
//    console.log(dp);
//   }
//   return max
// }

// console.log(maxSubArray2([0, -1, -4, 6, 4, -9, 0, 5, 8, -7]))
</script>

<style scoped lang="scss"></style>
